@echo off

rem Windows批处理启动脚本，用于运行用户服务并添加必要的JVM参数

echo =========================================
echo NS-BBS 用户服务启动脚本
echo 版本: 1.0.0
echo 用途: 解决JDK 9+与Dubbo 2.7.x的兼容性问题
echo =========================================

rem 检测Java版本
echo 检测Java版本...
java -version

rem 设置完整的JVM参数，解决JDK 9+模块化问题
set JAVA_OPTS=--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED

rem 设置Dubbo特定系统属性
set SYSTEM_PROPS=-Ddubbo.application.logger=slf4j -Dsun.misc.Unsafe.allowUnsafeImplementations=true

echo 正在启动用户服务，使用以下JVM参数:
echo %JAVA_OPTS%
echo %SYSTEM_PROPS%

rem 进入用户服务目录
cd /d "d:\Code\Community\springboot\user\bbs-user-service"

rem 检查目录是否正确
if not exist "pom.xml" (
    echo 错误: 找不到pom.xml文件，请检查目录路径是否正确
    pause
    exit /b 1
)

rem 清理并打包项目
echo =========================================
echo 正在构建项目...
echo =========================================
mvn clean package -DskipTests

if %ERRORLEVEL% neq 0 (
    echo 错误: 构建失败，请检查错误信息
    pause
    exit /b %ERRORLEVEL%
)

rem 检查JAR文件是否生成
if not exist "target\bbs-user-service-3.0.0-SNAPSHOT.jar" (
    echo 警告: 找不到预期的JAR文件，可能是文件名不同
    echo 正在查找可用的JAR文件...
    dir /b target\*.jar
    pause
)

rem 运行应用
echo =========================================
echo 正在启动应用...
echo 如果遇到问题，请考虑降级到JDK 8运行此应用
echo =========================================
java %JAVA_OPTS% %SYSTEM_PROPS% -jar target\bbs-user-service-3.0.0-SNAPSHOT.jar

rem 捕获退出代码
set EXIT_CODE=%ERRORLEVEL%

echo =========================================
echo 应用已退出，退出代码: %EXIT_CODE%
if %EXIT_CODE% neq 0 (
    echo 错误: 应用启动失败，请查看上述错误信息
    echo 建议解决方案:
    echo 1. 确保已安装JDK 8或添加了正确的JVM参数
    echo 2. 检查Zookeeper服务是否正在运行
    echo 3. 尝试重新构建项目
) else (
    echo 应用已成功启动
)
pause